#include "mytableview.h"

MyTableView::MyTableView(QWidget *parent) : QWidget(parent)
{
    setUI();
}

void MyTableView::setUI()
{
    tableView = new QTableView(this);
    model = new QStandardItemModel(0, 5);
    model->setHorizontalHeaderLabels({"编号", "果蔬", "颜色", "位置", "品质"});
    proxyModel = new QSortFilterProxyModel;
    proxyModel->setSourceModel(model);

    //tableView->setModel(model);
    tableView->setModel(proxyModel);
    tableView->setSelectionBehavior(QAbstractItemView::SelectRows);     //设置选择行为 选择整行
    tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);  //设置选择模式 允许选择多行
    tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);      // 禁止编辑
    tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);  // 自适应宽度
    tableView->resizeRowsToContents();

    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->addWidget(tableView);
    setLayout(layout);
}

void MyTableView::addItemLine(const Fruit &obj)
{
    QList<QStandardItem *> row;

    //序号 = 行数 + 1
    int No = model->rowCount() + 1;
    QStandardItem *item = new QStandardItem(QString::number(No));
    item->setTextAlignment(Qt::AlignCenter);
    row << item;

    //果蔬
    item = new QStandardItem(obj.species);
    item->setTextAlignment(Qt::AlignCenter);
    row << item;

    //颜色
    item = new QStandardItem(obj.color.name(QColor::HexRgb));
    item->setTextAlignment(Qt::AlignCenter);
    row << item;

    //位置
    item = new QStandardItem(
                QString("(%1, %2)")
                .arg(obj.pos.x())
                .arg(obj.pos.y()));
    item->setTextAlignment(Qt::AlignCenter);
    row << item;

    //品质
    item = new QStandardItem(obj.quality == 1 ? "小" :
                                obj.quality == 2 ? "中" : "大");
    item->setTextAlignment(Qt::AlignCenter);
    row << item;

    model->appendRow(row);

    //滚动到底部
    //tableView->scrollToBottom();
}

void MyTableView::clearItems()
{
    model->clear();
    model->setHorizontalHeaderLabels({"编号", "果蔬", "位置", "品质"});
}

void MyTableView::filterItemsByStr(const int &col, const QString &key)
{
    proxyModel->setFilterKeyColumn(col);
    proxyModel->setFilterFixedString(key);
}

void MyTableView::getSelectedIds(QString &rids)
{
    QModelIndexList selIndexs = tableView->selectionModel()->selectedRows();
    foreach (const QModelIndex& index, selIndexs) {
       int row = index.row();
       QStandardItem* item = model->item(row, 0);
       rids.append(item->text() + ",");
    }
    rids.chop(1);
}
